/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dswII.biblioteca.bl;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dswII.biblioteca.dao.CategoriaDaoLocal;
import mx.its.dswII.biblioteca.dao.CategoriaDeLibroDaoLocal;
import mx.its.dswII.biblioteca.enumeracion.EstadoTransaccion;
import mx.its.dswII.biblioteca.modelo.Categoria;
import mx.its.dswII.biblioteca.modelo.CategoriaDeLibro;
import mx.its.dswII.biblioteca.modelo.Libro;

/**
 *
 * @categoria Lenovo-user
 */
@Stateless
public class CategoriaBl implements CategoriaBlLocal {
    @EJB
    private CategoriaDaoLocal categoriaDao;
    @EJB
    private CategoriaDeLibroDaoLocal categoriaDeLibroDao;
    

    @Override
    public EstadoTransaccion register(Categoria categoria) {
           if (categoriaDao.findDuplicity(categoria) || categoria.getId()==null) {
            //no se pudo hacer
            return EstadoTransaccion.INCOMPLETO;
        } else {
            categoriaDao.create(categoria);
            // ya lo hizo
            return EstadoTransaccion.COMPLETO;

        }
    }
    @Override
    public EstadoTransaccion remove(Categoria categoria) {
       if (categoriaDao.find(categoria.getId()) == null || categoria.getId() == null) {

            return EstadoTransaccion.INCOMPLETO;
        } else {
            categoriaDao.remove(categoria);
            return EstadoTransaccion.COMPLETO;
        }
    }

    @Override
    public EstadoTransaccion modify(Categoria categoria) {
      if (categoria.getId() == null || categoriaDao.find(categoria.getId()) == null) {
            return EstadoTransaccion.INCOMPLETO;
        } else {
            categoriaDao.edit(categoria);
            return EstadoTransaccion.COMPLETO;
        }
    }

    @Override
    public List<Categoria> getAll() {
        
        return categoriaDao.findAll();
    }

    @Override
    public Categoria findById(int idCategoria) {
        return categoriaDao.find(idCategoria);
    }

    @Override
    public List<Categoria> getListByBook(Libro book) {
        List<CategoriaDeLibro> lista=categoriaDeLibroDao.getListByBook(book);
         List<Categoria> listaFinal=new ArrayList<Categoria>();
         for(CategoriaDeLibro cdl:lista){
             listaFinal.add(cdl.getIdCategoria());
         }
         return listaFinal;
    }

    @Override
    public List<Categoria> getListByCategory(Categoria category) {
        List<Categoria> categoryList = categoriaDao.findByCategory(category);
        List<Categoria> finalCategoryList = new ArrayList<Categoria>();
        
        for (Categoria categoria : categoryList) {
            finalCategoryList.add(categoria);
        }
        return finalCategoryList;
    }
    
    

}
